package cn.sjtu.algorithm.prefix_sum;

/**
 * @author syo 2319615164@qq.com
 * @description 一维前缀和
 * @date 2024/5/16
 * @Copyright syo
 */
// 使用一维前缀和的模板代码时，需要将数组改为以1开始编号
public class OneDimensionalPrefixSum {

    private static int[] prefixSum;
    public static void main(String[] args) {

        // 将6个数分别存在下标为1， 2， 3， 4， 5， 6处
        int[] nums = {0, 2, 3, 4, 5, 6, 7};

        // 计算前缀和数组
        prefixSum = new int[nums.length];
        for (int i = 1; i < nums.length; i++) {
            prefixSum[i] = prefixSum[i - 1] + nums[i];
        }

        System.out.println(getSum(1, 6));
    }

    // 计算[l, r]区间中元素的和，即第l个元素到第r个元素的和，从1开始
    public static int getSum(int l, int r) {
        return prefixSum[r] - prefixSum[l - 1];
    }


}
